/**
 * 爬虫小王子
 */
const puppeteer = require('puppeteer')

const url = `https://movie.douban.com/tag/#/?sort=T&range=7,10&tags=`

//延迟
const sleep = time => new Promise(resolve => {
  setTimeout(resolve, time)
})

//声明一个函数
;(async () => {
  console.log('开始启动小爬虫脚本啦')
  //打开模拟浏览器
  const browser = await puppeteer.launch({
    args: ['--no-sandbox'], //启动非杀伤模式
    dumpio: false
  })
  //开启新页面
  const page = await browser.newPage()
  //连接网络地址  当网络空闲时则代表加载结束
  await page.goto(url, {
    waitUntil: 'networkidle2'
  })
  //延时2秒
  await sleep(2000)
//   找到异步加载的页面的dom元素
  await page.waitForSelector('.more')
 //等待点击跳转 爬去7页的数据
  for (let i = 0; i < 2; i++) {
    await sleep(2000)
    await page.click('.more')
  }
//   回调函数
  const result = await page.evaluate(() => {
    //   页面的脚本分析是否有jquery库
    var $ = window.$
    // 获取dom列表
    var items = $('.list-wp a')
    // 初始化一个空数组
    var links = []

    if (items.length >= 1) {
      items.each((index, item) => {
        let it = $(item)
        let doubanId = it.find('div').data('id')
        let title = it.find('.title').text()
        let rate = Number(it.find('.rate').text())
        //小图换成大图
        let poster = it.find('img').attr('src').replace('s_ratio', 'l_ratio')

        links.push({
          doubanId,
          title,
          rate,
          poster
        })
      })
    }

    return links
  })
  //浏览器关闭
  browser.close()
  //数据发送出去
  process.send({result})
  //关闭进程
  process.exit(0)


})()
